package com.example.springbooteasycode.utils;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class PdfToImageConverter {

//    /**
//     * 将 PDF 文件流转换为一系列图片流。
//     *
//     * @param pdfInputStream PDF 文件的输入流
//     * @return 图片流的列表
//     * @throws IOException 如果发生 I/O 错误
//     */
//    public static List<byte[]> convertPdfPagesToImages(InputStream pdfInputStream) throws IOException {
//        List<byte[]> images = new ArrayList<>();
//
//        try (PDDocument document = PDDocument.load(pdfInputStream)) {
//            PDFRenderer renderer = new PDFRenderer(document);
//
//            for (int i = 0; i < document.getNumberOfPages(); i++) {
//                BufferedImage image = renderer.renderImageWithDPI(i, 300); // DPI 可以根据需要调整
//                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//
//                ImageIO.write(image, "png", outputStream);
//                images.add(outputStream.toByteArray());
//            }
//        }
//
//        return images;
//    }
//
//    public static void main(String[] args) {
//        try (ByteArrayInputStream pdfInputStream = new ByteArrayInputStream(getPdfBytes())) {
//            List<byte[]> imageBytesList = convertPdfPagesToImages(pdfInputStream);
//            // 保存图片到文件
//            for (int i = 0; i < imageBytesList.size(); i++) {
//                ImageIO.write(imageBytesList.get(i), "png", new File("page-" + (i + 1) + ".png"));
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    private static byte[] getPdfBytes() {
//        // 返回一个包含 PDF 内容的字节数组
//        // 你可以从数据库或其他来源获取这个字节数组
//        // 示例：返回一个示例 PDF 文件的内容
//        return "PDF 文件的字节内容".getBytes();
//    }
}
